package com.iatinspur.learn;

import com.iatinspur.pojo.Student;
import sun.misc.Cleaner;

import java.lang.ref.ReferenceQueue;
import java.lang.ref.SoftReference;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;


/**
 *
 * 31 讲解 可达性分析法【5个引用】
 *   1.强引用
 *   2.软引用
 *   【3.弱引用】      只要强引用消失，再调一次gc，就没有了
 *   【4.虚引用】
 *   【5.终结器引用】
 *
 */
public class Learn_28_JVM {


    public static void main(String[] args) {
        myTest1();
    }

    /**
     * 弱引用实现
     */
    public static void myTest1(){
        byte[] bytes = new byte[1024*1024*100];
        WeakReference<byte[]> weakRef = new WeakReference<byte[]>(bytes);
        System.out.println(weakRef.get()); //有
        bytes =null;
        System.out.println(weakRef.get()); //也有
        System.gc();
        System.out.println(weakRef.get()); //没有

        bytes = new byte[1024*1024*100];
        weakRef = new WeakReference<byte[]>(bytes);
        System.gc();
        System.out.println(weakRef.get()); //没有

    }


    /**
     * 弱引用实现类 Cleaner
     * 目的就是 将开辟的内存空间 回收
     * 比如直接内存 他受到虚拟机的内存管理，当申请这块内存空间不直接使用了  可以归还给操作系统
     */
    public static void myTest2(){
        Object obj = new Object();
    }

}











